
//1673.找出最具竞争力的子序列
class Solution {
public:
    vector<int> mostCompetitive(vector<int>& nums, int k) {
        //就是一个简单的单调栈,遍历数组,栈中元素是单调递增的即可
        int n=nums.size();
        vector<int> ret;   //用数组模拟栈
        for(int i=0;i<n;i++)
        {
            while(!ret.empty()&&ret.back()>nums[i]&&(n-i)+ret.size()>k)  //(n-i)+ret.size()>k保证栈中的元素+后面的元素>k
            {
                ret.pop_back();
            }

            ret.push_back(nums[i]);
        }
        ret.resize(k);
        return ret;
    }
};